Vòng Đời Plugin
Không giống như một Package thông thường chỉ có dạng Require và Return (Code xong quên). Framework SkillDo phải "theo dõi" toàn bộ Hệ Sinh Thái Plugin trong kho dữ liệu của mình (Bật, Tắt, Xóa, Gỡ Bỏ). Nếu một Quản Trị Viên nhấn "Gỡ Bỏ Plugin Bán Hàng", SkillDo sẽ cho Plugin cơ hội Cuối Cùng để tự giác "Dọn Dẹp Rác Của Mình Nơi Hệ Thống (Xóa Data Product, Xóa File DB)". Do đó Plugin được gán Vòng Đời rất sát sao.
1. File Khai Báo Bootstrap (Hook Sự Cố Ngầm)
Ngoài các Service Provider dùng để nạp Lớp (Class) và Định Tuyến (Route) như đã nói tại [02-Creating-Plugin.md].
Tại môi trường Quản lí Admin, Người dùng sẽ bấm Nút BẬT Hoặc TẮT.
Bạn cần chuẩn bị một cấu trúc Logic cho các Nút này (Thường là tạo một số Bảng Database hoặc chạy Query Update thông tin Server cài đặt lúc mới Bấm Bật Lên Lần Đầu).
Việc này làm bằng một Class có chữ Đuôi là Mặc Định (ID Plugin viết Hoa Chữ Cái Đầu) -> Hay file Bootstrap.
Giả sử Plugin của bạn tên là: skd-hello-world.
Bạn hãy tạo Cấu trúc tệp này: plugins/skd-hello-world/skd-hello-world.php.
(Lưu ý: Tên File Bootstrap (Định dạng .php) phải trùng lặp hoàn toàn với Tên Thư Mục chứa Plugin (Ví vụ Folder là ecommerce thì file tên là ecommerce.php). Đặt nằm ở vị trí ngang hàng ngoài cùng - Thư Mục Root của Plugin)
<?php
// plugins/skd-hello-world/skd-hello-world.php
class SkdHelloWorld
{
// Hàm active(): Được gọi DUY NHẤT 1 LẦN khi Admin bấm Bật ở Menu Quản Trị.
public function active()
{
// Thường dùng để khởi tạo Database Schema, Import Seed Data...
SkillDo\Database\DB::schema()->create('my_hello_table', function($table) {
$table->increments('id');
$table->string('message');
});
}
// Hàm uninstall(): Kích hoạt khi Admin bấm Gỡ Cài Đặt.
public function uninstall()
{
// Chức năng "Dọn dẹp": Gỡ bỏ bảng đã tạo, file cấu hình, file log, để không bỏ rơi rác.
SkillDo\Database\DB::schema()->dropIfExists('my_hello_table');
}
}
Từ đây, Bộ nạp của CMS sẽ tự động liên kết Nút Bấm "Kích Hoạt / Gỡ Bỏ" với file .php có chức năng tương ứng của Bạn!